
# API1.binarytree.tree
# from binarytree import tree
#创建随机二叉树，并返回根节点，height为2,高度从零开始。is_perfect：代表是否创建完全二叉树
# my_tree = tree(height=2, is_perfect=True)
# print(my_tree)#可通过打印可视化随机的二叉树


#API2.binarytree.Node
#创建自己的二叉树节点
# from binarytree import Node
#建立二叉树的且节点是带有索引的，从根节点开始为0,索引顺序是从上到下，从左到右
# root = Node(1)
# root.left = Node(2)
# root.right = Node(3)
# root.left.left = Node(4)
# root.left.right = Node(5)
#可以通过索引访问节点
# print(root[3])Node类型
# del root[3]
# print(root[3].value)#访问值
# print([node for node in root])#[Node(1), Node(2), Node(3), Node(4), Node(5)]
# print(len(root)) #返回节点的数量
# print(root.size)

#root.pprint()  访问tree，可视化 ==print(root)

# 增：使用left，和right来节点增加节点

# 删：使用del root[index]
# 改:定位tree的节点，使用Node(number)赋值
# root[4] = Node(8)
# print(root[4])
# 查:使用index来查找索引 root[index]
#显示 root.pprint(index=False)
# print(root.values)#查看树的所有的值

#树的高度:从零开始计算的高度
# root.pprint()
# print(root.height)

#判断该树是否是平衡二叉树
# print(root.is_balanced)

#判断该树是否死完全二叉树
# print(root.is_perfect)

#查看一棵树的叶子节点数量及叶子节点
# print(root.leaf_count)
# print(root.leaves)
#中序遍历，前序遍历，后续遍历,#使用栈可以实现  层次遍历#使用队列实现
# print(root.inorder)
# print(root.preorder)
# print(root.postorder)
# print(root.levelorder)


#API3.binarytree.bulid
from binarytree import build

#按层次遍历添加节点，None代表空节点
tree = build([1,2,3,4,5,None,6])
tree.pprint(index=True)
print(tree.height)
print(tree.leaves)
print(tree.leaf_count)
print(tree.properties)












